package com.personal.system.service.impl.act;

import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.personal.system.entity.WorkflowExample;
import com.personal.system.service.act.WorkflowExampleService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.personal.system.mapper.act.WorkflowExampleMapper;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.Arrays;
import java.util.List;

/**
 * 工作流实例Service业务层处理
 *
 * @author hhdd
 * @date 2022-11-28 11:10:55
 */
@Service
public class WorkflowExampleServiceImpl implements WorkflowExampleService {

    @Resource
    private WorkflowExampleMapper workflowExampleMapper;

    /**
     * 查询工作流实例
     *
     * @param id 工作流实例ID
     * @return 工作流实例
     */
    @Override
    public WorkflowExample selectWorkflowExampleById(String id) {
        return workflowExampleMapper.selectById(id);
    }

    /**
     * 查询工作流实例列表
     *
     * @param workflowExample 工作流实例
     * @return 工作流实例
     */
    @Override
    public List<WorkflowExample> selectWorkflowExampleList(WorkflowExample workflowExample) {

        LambdaQueryWrapper<WorkflowExample> qw = new LambdaQueryWrapper<>();
        qw.like(StrUtil.isNotBlank(workflowExample.getProcessDefinitionKey()), WorkflowExample::getProcessDefinitionKey, workflowExample.getProcessDefinitionKey());
        qw.like(StrUtil.isNotBlank(workflowExample.getName()), WorkflowExample::getName, workflowExample.getName());
        qw.orderByDesc(WorkflowExample::getCreateTime);
        return workflowExampleMapper.selectList(qw);
    }

    /**
     * 新增工作流实例
     *
     * @param workflowExample 工作流实例
     * @return 结果
     */
    @Override
    public int insertWorkflowExample(WorkflowExample workflowExample) {
        workflowExample.setCreateTime(DateUtil.date());
        return workflowExampleMapper.insert(workflowExample);
    }

    /**
     * 修改工作流实例
     *
     * @param workflowExample 工作流实例
     * @return 结果
     */
    @Override
    public int updateWorkflowExample(WorkflowExample workflowExample) {
        workflowExample.setUpdateTime(DateUtil.date());
        return workflowExampleMapper.updateById(workflowExample);
    }

    /**
     * 批量删除工作流实例
     *
     * @param ids 需要删除的工作流实例ID
     * @return 结果
     */
    @Override
    public int deleteWorkflowExampleByIds(String[] ids) {
        return workflowExampleMapper.deleteBatchIds(Arrays.asList(ids));
    }

    /**
     * 删除工作流实例信息
     *
     * @param id 工作流实例ID
     * @return 结果
     */
    @Override
    public int deleteWorkflowExampleById(String id) {
        return workflowExampleMapper.deleteById(id);
    }
}
